package com.flc.realtime.redis;

import com.flc.realtime.config.AppConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @author haizi
 * @date 2018/1/24
 */
public class RedisPool {

    private RedisPool() {}

    private static JedisPool jedisPool = null;

    public static synchronized Jedis getJedis(){
        return jedisPool.getResource();
    }

    public static void init(AppConfig.RedisCfg redisCfg) {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //指定连接池中最大空闲连接数
        jedisPoolConfig.setMaxIdle(redisCfg.getMaxIdle());
        //链接池中创建的最大连接数
        jedisPoolConfig.setMaxTotal(redisCfg.getMaxTotal());
        //设置创建链接的超时时间
        jedisPoolConfig.setMaxWaitMillis(redisCfg.getMaxWaitMillis());
        //表示连接池在创建链接的时候会先测试一下链接是否可用，这样可以保证连接池中的链接都可用的。
        jedisPoolConfig.setTestOnBorrow(true);
        jedisPool = new JedisPool(jedisPoolConfig, redisCfg.getHost(), redisCfg.getPort());
    }
}